package com.longkier.gx_library_springboot.Controller;

import com.longkier.gx_library_springboot.exception.CustomException;
import com.longkier.gx_library_springboot.utils.RequestUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import com.longkier.gx_library_springboot.Service.LoginService;
import java.util.Map;

/**
 * 登录控制器，处理用户的登录请求。
 */
@RestController
@RequestMapping("/login")
@CrossOrigin(origins = "http://localhost:5173", allowCredentials = "true")
public class LoginController {

    private final LoginService loginService;

    /**
     * 构造器注入登录服务。
     *
     * @param loginService 登录服务实例
     */
    @Autowired
    public LoginController(LoginService loginService) {
        this.loginService = loginService;
    }

    /**
     * 处理POST请求的登录操作。
     *
     * @param loginDetails 包含用户类型、用户名和密码的请求体
     * @return 包含登录结果的响应对象
     */
    @PostMapping
    public Map<String, Object> login(@RequestBody Map<String, String> loginDetails) {
        try {
            // 从请求体中获取用户类型、用户名和密码
            String userType = loginDetails.get("userType"); // 登录类型 (e.g., "book_admin" or "user" or "admin")
            String username = loginDetails.get("username");
            String password = loginDetails.get("password");

            // 检查请求参数是否完整
            if (userType == null || username == null || password == null) {
                // 如果缺少参数，返回错误响应
                return RequestUtils.buildResponse("缺少必要参数", 400);
            } else {
                // 调用登录服务进行登录验证
                return loginService.login(userType, username, password);
            }
        }
        catch (Exception e) {
            throw new CustomException(500, "登录时发生异常");
        }
    }
}
